import time

def generate_receipt():
    # 获取当前时间并格式化
    current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 生成订单号（格式：HP + 年月日 + 4位序号）
    date_part = time.strftime("%Y%m%d", time.localtime())
    order_id = f"HP{date_part}0001"  # 实际应用中序号应递增
    
    products = []
    total_quantity = 0
    total_amount = 0.0
    
    print("=" * 50)
    print("          欢迎使用超市购物小票生成器")
    print("=" * 50)
    print("请输入商品信息（格式：名称 数量 单价）")
    print("输入完成后，请输入空行结束")
    print("-" * 50)
    
    while True:
        user_input = input().strip()
        if not user_input:
            break
        try:
            # 拆分输入信息
            parts = user_input.split()
            if len(parts) < 3:
                print("输入格式错误，请重新输入（名称 数量 单价）")
                continue
            
            # 处理可能包含空格的商品名称
            name = ' '.join(parts[:-2])
            quantity = int(parts[-2])
            price = float(parts[-1])
            
            amount = quantity * price
            products.append((name, quantity, price, amount))
            total_quantity += quantity
            total_amount += amount
            print(f"已添加: {name} x {quantity} - 单价: {price:.2f}")
        except ValueError:
            print("输入格式错误，请重新输入（名称 数量 单价）")
    
    # 打印购物小票
    print("\n\n" + "=" * 50)
    print("                  超市小票")
    print("=" * 50)
    print(f"单号: {order_id}")
    print(f"时间: {current_time}")
    print("-" * 50)
    
    # 打印表头
    print(f"{'名称':<20} {'数量':<6} {'单价':<8} {'金额':<8}")
    print("-" * 50)
    
    # 打印商品明细
    for name, quantity, price, amount in products:
        # 处理商品名称过长的情况
        display_name = name[:18] + "..." if len(name) > 20 else name
        print(f"{display_name:<20} {quantity:<6} {price:<8.2f} {amount:<8.2f}")
    
    print("-" * 50)
    # 打印总计信息
    print(f"总数: {total_quantity:<38}")
    print(f"总计: {total_amount:<40.2f}")
    print(f"折后总额: {total_amount:<37.2f}")
    print(f"实收: {total_amount:<40.2f}")
    print(f"找零: 0.00{'':<38}")
    print(f"收银员: 管理员{'':<35}")
    print("-" * 50)
    print("        感谢您的惠顾，欢迎下次次光临！")
    print("=" * 50)

if __name__ == "__main__":
    generate_receipt()
